package com.newtouch.bxzs.common.base.util;

import com.alibaba.fastjson.JSONArray;
import com.newtouch.bxzs.common.base.model.bo.CompanyParameterBO;
import com.newtouch.bxzs.common.base.model.bo.CompanyParameterGroupBO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 获取合作公司参数信息
 *
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2021/3/4 15:35</td>
 * <td>yuanjie</td>
 * <td>Create</td>
 * </tr>
 * </table>
 *
 * @author yuanjie
 * @version 1.0.0
 * @since 1.0.0
 */
@Component
public class CooperationCompanyUtils {

    @Autowired
    private RedisUtils redisUtils;

    /**
     * 根据统一信用代码和参数code从redis中拿出url
     * @param unifiedSocialCreditCode 合作公司id
     * @param cooperationCompanyParameterCode 合作公司编码
     * @return url
     */
    public String getCompanyUrl(String unifiedSocialCreditCode,String cooperationCompanyParameterCode) {
        //获取合作公司参数列表
        List<CompanyParameterBO> companyParameterList = JSONArray
                .parseArray(redisUtils.get(unifiedSocialCreditCode), CompanyParameterBO.class);
        return this.getCompanyUrlByParamCode(companyParameterList,cooperationCompanyParameterCode);
    }

    /**
     * 根据合作公司参数编码获取合作公司参数值
     * @param companyParameterList 合作公司参数
     * @param cooperationCompanyParameterCode 合作公司编码
     * @return
     */
    public String getCompanyUrlByParamCode(List<CompanyParameterBO> companyParameterList,String cooperationCompanyParameterCode){
        for (CompanyParameterBO companyParameter:companyParameterList) {
            if (cooperationCompanyParameterCode.equals(companyParameter.getCooperationCompanyParameterCode())){
                return companyParameter.getCooperationCompanyParameterValue();
            }
        }
        return null;
    }

    /**
     * 根据统一信用代码获取合作公司参数值
     * @param companyParameterGroups 根据合作公司编号分组信息
     * @param unifiedSocialCreditCode 统一信用代码
     * @param cooperationCompanyParameterCode 合作公司编码
     * @return
     */
    public String getCompanyUrlById(List<CompanyParameterGroupBO> companyParameterGroups,String unifiedSocialCreditCode,String cooperationCompanyParameterCode){
        for (CompanyParameterGroupBO companyParameterGroup: companyParameterGroups) {
            if (unifiedSocialCreditCode.equals(companyParameterGroup.getUnifiedSocialCreditCode())){
                return getCompanyUrlByParamCode(companyParameterGroup.getCompanyParameter(),cooperationCompanyParameterCode);
            }
        }
        return null;
    }
}
